/*************************************************************************************
 * Nombre del archivo: Interfaz_Cola.java
 * Universidad del Valle de Guatemala
 * Curso: Sistemas Operativos
 * @author martin
 *          Martín Guzmán 08041
 * Fecha: Febrero de 2010
 * Descripción:
*************************************************************************************/
import java.util.LinkedList;

public interface Interfaz_Cola <G> {

    /***********************************************
     * Método: peek
     * Uso: retorna el primer elemento de la cola
     * @return G elemento genérico
    ***********************************************/
    public G peek();
    /***********************************************
     * Método: poll
     * Uso: retorna y saca el primer elemento de la cola
     * @return G elemento genérico
    ***********************************************/
    public G poll();
    /***********************************************
     * Método: isEmpty
     * Uso: retorna si la cola está vacía
     * @return G elemento genérico
    ***********************************************/
    public boolean isEmpty();
    /***********************************************
     * Método: remove
     * Uso: retorna si la cola está vacía
     * @return void
    ***********************************************/
    public void remove(G objeto);
    /***********************************************
     * Método: getCola
     * Uso: retorna una lista con la cola
     * @return LinkedList<G> contiene la cola
    ***********************************************/
    public LinkedList<G> getCola();
    /***********************************************
     * Método: getFirst
     * Uso: obtiene el primer elemento de la cola
     * @return G con el primer objeto de la cola
    ***********************************************/
    public G getFirst();
    /***********************************************
     * Método: get
     * Uso: obtiene el elemento especificado
     * @return G con el elemento de la cola...
    ***********************************************/
    public G get(int i);
    /***********************************************
     * Método: getLast
     * Uso: obtiene el último elemento de la cola
     * @return G con el último objeto de la cola
    ***********************************************/
    //public G getLast();
    /***********************************************
     * Método: getLast_in
     * Uso: obtiene el último elemento que entró a la cola
     * @return G con el último objeto que entró a la cola
    ***********************************************/
    public G getLast_in();
    /***********************************************
     * Método: getCola
     * Uso: retorna una lista con la cola
     * @return LinkedList<G> contiene la cola
    ***********************************************/
    public void add(G nuevo);

    public int getQuantum();
    public void setQuantum(int quantum);
    public boolean getPreemptive();
    public void setPreemptive(boolean preemptive);
    public int getQueueOnQuantumEnd();
    public void setQueueOnQuantumEnd(int queueOnQuantumEnd);
    public int getQueueOnIOEnd();
    public void setQueueOnIOEnd(int queueOnIOEnd);
    public int getId();
    public void setId(int id);
    public String getName();
    public void setName(String name);
    public String getType();
    public void setType(String type);
    public int getNumero_cola();
    public void setNumero_cola(int numero_cola);
    public void Add_Execution_time();
    public int getExcecution_time_in_this();

}
